package com.zenithmind.version.pojo.query;

import com.zenithmind.common.query.BaseQuery;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 合并请求查询DTO
 *
 * @author ZenithMind Team
 * @since 2025-01-09
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(description = "合并请求查询DTO")
public class MergeRequestQueryDTO extends BaseQuery {

    /**
     * 关键词
     */
    @Schema(description = "关键词")
    private String keyword;

    /**
     * 仓库ID
     */
    @Schema(description = "仓库ID")
    private String repositoryId;

    /**
     * 标题
     */
    @Schema(description = "标题")
    private String title;

    /**
     * 源分支
     */
    @Schema(description = "源分支")
    private String sourceBranch;

    /**
     * 目标分支
     */
    @Schema(description = "目标分支")
    private String targetBranch;

    /**
     * 状态
     */
    @Schema(description = "状态")
    private Integer status;

    /**
     * 作者ID
     */
    @Schema(description = "作者ID")
    private String authorId;

    /**
     * 指派人ID
     */
    @Schema(description = "指派人ID")
    private String assigneeId;

    /**
     * 合并者ID
     */
    @Schema(description = "合并者ID")
    private String mergedBy;

    /**
     * 是否有冲突
     */
    @Schema(description = "是否有冲突")
    private Boolean hasConflicts;

    /**
     * 是否可自动合并
     */
    @Schema(description = "是否可自动合并")
    private Boolean canAutoMerge;

    /**
     * 审核状态
     */
    @Schema(description = "审核状态")
    private String reviewStatus;

    /**
     * 标签
     */
    @Schema(description = "标签")
    private String labels;

    /**
     * 里程碑
     */
    @Schema(description = "里程碑")
    private String milestone;

    /**
     * 是否包含已删除
     */
    @Schema(description = "是否包含已删除")
    private Boolean includeDeleted;

    /**
     * 排序字段
     */
    @Schema(description = "排序字段")
    private String sortField;

    /**
     * 排序方向
     */
    @Schema(description = "排序方向")
    private String sortDirection;

    /**
     * 开始时间
     */
    @Schema(description = "开始时间")
    private String startTime;

    /**
     * 结束时间
     */
    @Schema(description = "结束时间")
    private String endTime;
}
